// Copyright Epic Games, Inc. All Rights Reserved.

#include "LyraCombatSet.h" // 包含本类的头文件

#include "AbilitySystem/Attributes/LyraAttributeSet.h" // 包含父类头文件
#include "Net/UnrealNetwork.h" // 包含网络复制功能所需的头文件

#include UE_INLINE_GENERATED_CPP_BY_NAME(LyraCombatSet) // 包含由 UHT 生成的内联函数文件

class FLifetimeProperty; // 前向声明 FLifetimeProperty 类

/**
 * ULyraCombatSet 类的构造函数
 * 初始化成员变量
 */
ULyraCombatSet::ULyraCombatSet()
	: BaseDamage(0.0f) // 初始化基础伤害为 0.0f
	, BaseHeal(0.0f) // 初始化基础治疗为 0.0f
{
}

/**
 * 定义需要通过网络复制的属性
 * @param OutLifetimeProps 用于存储复制属性信息的数组
 */
void ULyraCombatSet::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps); // 调用父类的实现

	// 注册 BaseDamage 属性进行复制，条件是仅复制给所有者，并且总是通知
	DOREPLIFETIME_CONDITION_NOTIFY(ULyraCombatSet, BaseDamage, COND_OwnerOnly, REPNOTIFY_Always);
	// 注册 BaseHeal 属性进行复制，条件是仅复制给所有者，并且总是通知
	DOREPLIFETIME_CONDITION_NOTIFY(ULyraCombatSet, BaseHeal, COND_OwnerOnly, REPNOTIFY_Always);
}

/**
 * BaseDamage 属性复制回调函数
 * @param OldValue 复制更新前的旧值
 */
void ULyraCombatSet::OnRep_BaseDamage(const FGameplayAttributeData& OldValue)
{
	// 处理 BaseDamage 属性复制通知的宏
	GAMEPLAYATTRIBUTE_REPNOTIFY(ULyraCombatSet, BaseDamage, OldValue);
}

/**
 * BaseHeal 属性复制回调函数
 * @param OldValue 复制更新前的旧值
 */
void ULyraCombatSet::OnRep_BaseHeal(const FGameplayAttributeData& OldValue)
{
	// 处理 BaseHeal 属性复制通知的宏
	GAMEPLAYATTRIBUTE_REPNOTIFY(ULyraCombatSet, BaseHeal, OldValue);
}